﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using vudu.Logica.Clases;
using vudu.EnlaceDatos.SqlServer;
using System.Security.Permissions;



namespace vudu.PaginasWeb.G4ArchivoPdf
{
    public partial class ArchivoPdf2 : System.Web.UI.Page
    {
       
        protected void Page_Load(object sender, EventArgs e)
        {
            string miRol = (string)Session["rol"];
            if (miRol != "Profesor")
            {
                Response.Redirect("../G3AccesoSistema/InicioSistema.aspx");
            }
            if (!Page.IsPostBack)
            {
                Profesor miProfesor = (Profesor)Session["Usuario"];
                nombreProfesor.Text = miProfesor.Nombre.ToString() + " " + miProfesor.Apellido.ToString();


                String ruta = "~/Archivo/" + miProfesor.Cedula.ToString() + miProfesor.Nombre + miProfesor.Apellido + ArchivoPdf_Principal.Materia.ToString() + ArchivoPdf_Principal.Seccion.ToString() + "/";

                DirectoryInfo prueba = new DirectoryInfo(MapPath(ruta));
                if (!prueba.Exists)
                {
                    DirectoryInfo hola = new DirectoryInfo(MapPath("~/Archivo/"));
                    string path2 = miProfesor.Cedula.ToString() + miProfesor.Nombre + miProfesor.Apellido + ArchivoPdf_Principal.Materia.ToString() + ArchivoPdf_Principal.Seccion.ToString();
                    hola.CreateSubdirectory(path2);
                }

            }

        }

       
        protected void bSubirArchivo_Click(object sender, EventArgs e)
        {
            //Guardamos el Archivo en la carpeta archivo del servidor y validamos campos
            validarSubirArchivo();

          
        }

        protected void carpetas_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (!carpetas.SelectedValue.Equals(" "))
            {
                mensaje.Text = " ";
            }
        }

        public void validarSubirArchivo()
        {
            Profesor miProfesor = (Profesor)Session["Usuario"];
            //Se valida que los campos seleccionados contengan un valor correcto
            if ((carpetas.SelectedValue.Equals(" ")) || (!fuCargarArchivo.HasFile))
            {
                MensajeError.Text = "Debe Seleccionar Una Opcion";
            }
            else
            {
                mensaje.Text = " ";
                string fileName = Server.HtmlEncode(fuCargarArchivo.FileName);
                float tamañoArchivo = ((fuCargarArchivo.PostedFile.ContentLength) / 1024);
                float tamañoComparar = tamañoArchivo + miProfesor.EspacioUtilizado;
               


                // Se valida el limite de carga de archivo que puede subir un profesor en su cuenta
                if (tamañoComparar <= miProfesor.EspacioMaxCarga)
                {

                    // Se obtiene la extension del archivo para saber si es de tipo Pdf
                    string extension = System.IO.Path.GetExtension(fileName);

                    // Se valida que el Archivo sea de tipo PDF
                    if (extension == ".pdf")
                    {

                        String path = "~/Archivo/" + miProfesor.Cedula.ToString() + miProfesor.Nombre + miProfesor.Apellido + ArchivoPdf_Principal.Materia.ToString() + ArchivoPdf_Principal.Seccion.ToString() + "/";

                        FileInfo prueba = new FileInfo(MapPath(path + fuCargarArchivo.FileName.ToString()));
                        // Se valida que el Archivo a subir no tenga el mismo nombre de otro Archivo ya subido
                        if (!prueba.Exists)
                        {
                                //Se guarda el Archivo.pdf en la carpeta Archivo que se encuentra dentro de la carpeta /src/vudu/
                                fuCargarArchivo.SaveAs(MapPath(path + fuCargarArchivo.FileName.ToString()));
                                IMensajeExito.Text = "El Archivo:" + fuCargarArchivo.FileName.ToString() + "se cargo con exito en el Servidor";
                                miProfesor.EspacioUtilizado = tamañoComparar;    
                                OperacionesPdf archivoPdf = new OperacionesPdf();
                                archivoPdf.nombreArchivo = fuCargarArchivo.FileName.ToString();
                                archivoPdf.categoria = carpetas.SelectedValue.ToString();
                                archivoPdf.rutaArchivoPdf = new FileInfo(path);
                                //Se guarda en base dato el registro del archivo
                                SqlServerArchivoPdf user = new SqlServerArchivoPdf();
                                user.InsertarArchivoPdf(archivoPdf, tamañoArchivo, miProfesor, ArchivoPdf_Principal.Seccion);
                                Response.Redirect("ArchivoPdf.aspx");
                           
                        }
                        else
                        {
                            MensajeError.Text = "ya existe un Archivo igual en su cuenta ";
                        }

                    }
                    else
                    {
                        MensajeError.Text = "Error El Archivo a subir debe ser de tipo PDF ";
                    }

                }
                else
                {
                    MensajeError.Text = "Error El Archivo a subir pasa del limite ";
                }
            }
        }
       

           
    }
}